package com.naiterui.ehp.bs.emr.vo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.naiterui.ehp.bp.bo.emr.MedicalRecordSettingBO;
import com.naiterui.ehp.bp.utils.date.DateUtil;
import com.naiterui.ehp.bs.emr.vo.patient.MenstrualVO;
import com.naiterui.ehp.bs.emr.vo.scale.DoctorScaleVO;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@ApiModel(value = "DrCaseVO", description = "医生填写病历VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DrCaseVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "医生id")
    @JsonInclude(Include.NON_NULL)
    private Long doctorId;// 医生id

    @ApiModelProperty(value = "医生姓名")
    @JsonInclude(Include.NON_NULL)
    private String doctorName;// 医生姓名

    @ApiModelProperty(value = "医生姓名")
    @JsonInclude(Include.NON_NULL)
    private String department;// 科室

    @ApiModelProperty(value = "医院名称")
    @JsonInclude(Include.NON_NULL)
    private String hospitalName;// 医院名称

    @ApiModelProperty(value = "患者id")
    @JsonInclude(Include.NON_NULL)
    private Long patientId;// 患者id

    @ApiModelProperty(value = "患者姓名")
    @JsonInclude(Include.NON_NULL)
    private String name;// 患者姓名

    @ApiModelProperty(value = "患者性别0女1男")
    @JsonInclude(Include.NON_NULL)
    private Integer gender;   // 0女1男

    @ApiModelProperty(value = "年龄")
    @JsonInclude(Include.NON_NULL)
    private Integer age; // 年龄

    @ApiModelProperty(value = "显示年龄")
    @JsonInclude(Include.NON_NULL)
    private String ageStr;

    @ApiModelProperty(value = "年龄单位:岁，月，周")
    @JsonInclude(Include.NON_NULL)
    private String ageUnit; // 年龄单位:岁，月，周

    @ApiModelProperty(value = "主诉")
    @JsonInclude(Include.NON_NULL)
    private String mainComplaint; // 主诉

    @ApiModelProperty(value = "现病史")
    @JsonInclude(Include.NON_NULL)
    private String presentDisease;// 现病史

    @ApiModelProperty(value = "既往史")
    @JsonInclude(Include.NON_NULL)
    private String pastHistory;// 既往史

    @ApiModelProperty(value = "体温")
    @JsonInclude(Include.NON_NULL)
    private String temperature;// 体温

    @ApiModelProperty(value = "体重")
    @JsonInclude(Include.NON_NULL)
    private String weight;// 体重

    @ApiModelProperty(value = "心率")
    @JsonInclude(Include.NON_NULL)
    private Integer heartRete;// 心率

    @ApiModelProperty(value = "收缩压")
    @JsonInclude(Include.NON_NULL)
    private Integer systolic;// 收缩压

    @ApiModelProperty(value = "舒张压")
    @JsonInclude(Include.NON_NULL)
    private Integer diastole;// 舒张压

    @ApiModelProperty(value = "更多检查结果")
    @JsonInclude(Include.NON_NULL)
    private String moreExamin;// 更多检查结果

    @ApiModelProperty(value = "其它检查的alt")
    @JsonInclude(Include.NON_NULL)
    private Integer alt;

    @ApiModelProperty(value = "其它检查的ast")
    @JsonInclude(Include.NON_NULL)
    private Integer ast;

    @ApiModelProperty(value = "其它检查的hbvDna")
    @JsonInclude(Include.NON_NULL)
    private String hbvDna;

    @ApiModelProperty(value = "诊断（英文逗号隔开） 要删除")
    @JsonInclude(Include.NON_NULL)
    private String diagnosis;// 诊断（逗号隔开）

    @ApiModelProperty(value = "诊断列表")
    @JsonInclude(Include.NON_NULL)
    private List<String> diagnosisList;

    @ApiModelProperty(value = "医嘱小结")
    @JsonInclude(Include.NON_NULL)
    private String doctorOrder;// 医嘱小结

    @ApiModelProperty(value = "是否有复诊时间（1有，2无）")
    @JsonInclude(Include.NON_NULL)
    private Integer revisitFalg;// 是否有复诊时间（1有，2无）

    @ApiModelProperty(value = "几天后复诊")
    @JsonInclude(Include.NON_NULL)
    private Integer revisitNumber;// 几天后复诊

    @ApiModelProperty(value = "复诊时间单位(天，周，月)")
    @JsonInclude(Include.NON_NULL)
    private String revisitDateUnit;// 复诊时间单位(天，周，月)

    @ApiModelProperty(value = "图片列表")
    @JsonInclude(Include.NON_NULL)
    private List<ImgFileVO> imgList;// 图片列表

    @ApiModelProperty(value = "模板类型1:通用模板,2:肝病模板")
    @JsonInclude(Include.NON_NULL)
    private Integer templateType;// 模板类型1:通用模板,2:肝病模板

    @ApiModelProperty(value = "6:本人")
    @JsonInclude(Include.NON_NULL)
    private Integer member;// 6:本人

    @ApiModelProperty(value = "创建时间（yyyy-MM-dd hh:mm）")
    @JsonInclude(Include.NON_NULL)
    private String createDate;// 创建时间"

    @ApiModelProperty(value = "创建时间戳")
    @JsonInclude(Include.NON_NULL)
    private Long createAt;// 创建时间

    @ApiModelProperty(value = "处方对象")
    @JsonInclude(Include.NON_NULL)
    private RecordPrescriptionVO prescriptionVO;

    @ApiModelProperty(value = "0：父亲；1：母亲；2：兄弟姐妹；3：子女；4：丈夫；5：妻子；6：本人；7：其他家庭成员")
    @JsonInclude(Include.NON_NULL)
    private Integer relation;// 0：父亲；1：母亲；2：兄弟姐妹；3：子女；4：丈夫；5：妻子；6：本人；7：其他家庭成员

    @ApiModelProperty(value = "病历作废状态 0：正常 1：作废")
    private Integer invalid;

    @ApiModelProperty(value = "病历作废时间")
    @JsonFormat(pattern = DateUtil.DATE_TIME)
    private Date invalidTime;

    @ApiModelProperty(value = "模板id")
    @JsonInclude(Include.NON_NULL)
    private Long templateId;

    @ApiModelProperty(value = "模板名称")
    @JsonInclude(Include.NON_NULL)
    private String templateName;

    @ApiModelProperty(value = "医生填写量表")
    @JsonInclude(Include.NON_NULL)
    private DoctorScaleVO doctorScaleVO;

    @ApiModelProperty(value = "标准诊断列表")
    @JsonInclude(Include.NON_NULL)
    private List<String> standardDiagList;

    @ApiModelProperty(value = "诊断提示语")
    @JsonInclude(Include.NON_NULL)
    private String diagnoseDeleteTip;

    @ApiModelProperty("治疗意见")
    @JsonInclude(Include.NON_NULL)
    private String treatmentOptions;

    @ApiModelProperty("月经信息")
    @JsonInclude(Include.NON_NULL)
    private MenstrualVO menstrual;

    @ApiModelProperty(value = "阳性体征")
    @JsonInclude(Include.NON_NULL)
    private String positiveSigns;

    @ApiModelProperty(value = "必要的阴性体征")
    @JsonInclude(Include.NON_NULL)
    private String negativeSigns;

    @ApiModelProperty(value = "过敏史")
    @JsonInclude(Include.NON_NULL)
    private String allergy;

    @ApiModelProperty(value = "家庭史")
    @JsonInclude(Include.NON_NULL)
    private String pastFamily;

    /**
     *
     * 病历设置
     */
    @ApiModelProperty(value = "病历设置")
    private List<MedicalRecordSettingBO> medicalRecordSettingList;

}
